<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<Title>A Little About This Program</Title>
</HEAD>
<BODY>
<Object type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e">
	<param name="Keyword" value=".net">
	<param name="Keyword" value="background">
	<param name="Keyword" value="C#">
	<param name="Keyword" value="java">
	<param name="Keyword" value="NOVA">
	<param name="Keyword" value="program">
</OBJECT>
<h4><FONT SIZE=+2 face="Arial">A Little about this program</FONT></h4>
<P><font face="Arial" size="2">Back in the mid 80s when I saw the NOVA program described in <a href="LittleTheory.htm">A
Little Theory</a>, I could hardly believe it.  To confirm their results I wrote a little random game in the just-released object-oriented Turbo Pascal from Borland.  Sure enough, same results.  I later wrote it as an OS/2, multi-threaded PM app.  Then as a 16-bit C Windows app. 
Then a multithreaded Java applet/application.  And in the new millennium,
about fifteen years after the first inception, it was a C# application. And now well, into the millenium, it is a Python PyGame application.</font></P> 
 <P><font face="Arial" size="2">
 <b>Notes about the Python application<br>
</b>This is a yet another port.  It follows a similar design to the previous versions.  PyGame is required to be installed.  It has been tested on Window, and the Raspberry Pi's Linux.
<br>
<br>
<b>Notes about the C# application<br>
</b>This is a pretty close port of the Java applet from before.  The main
plotting code is largely unchanged.  It uses a Bitmap object to do the
in-memory plotting for repainting.  Most of the rest of the UI is all new
since it completely different.  I added other bells and whistles such as
this help and printing instead of learning using book samples.  It does use
a simple background thread for plotting to avoid hanging the UI.</font></P>  <P><font face="Arial" size="2"><b>Notes
about the Java applet</b><br>
The Java applet used a few interesting things.  It used a memory Image to buffer all the screen writes.  Yes every point
was written twice, once to the screen, once to memory.  I could have done it once to memory, but you
lost the neat effect of seeing the image evolve as it was plotted.  It also
used a background thread to plot all the points.<BR> <BR> The applet also ran as a stand-alone application.  This idea was stolen from the Core Java book by Cornell and Horstmann.  This gave me some headaches since it would work fine as an application (1.02 JDK on NT), but
had problems as an applet.</font></P>  <P><font face="Arial" size="2">The UI was ok, considering
I used awt.  It did have cascaded dialogs, one modless, another modal which caused some problems which I had to work around.  I also had problems running as an applet only
using modal dialogs when calculating the preferred sizes. Running it as an application
workes fine, but I had to make all dialogs modeless to get the layout to work in the browser.  Another hack had to do with getting focus to the correct parent after loading a cascaded dialog.</font></P> 

</BODY>
</HTML>
